home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 4
/
Aminet 4 - November 1994.iso
/
aminet
/
comm
/
ums
/
ums109_1.lha
/
Tools
/
SelectMail.LHA
/
SelectMail
/
SelectMail.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-04-04
|
7KB
|
230 lines
/*
* SelectMail.c (adapted from SelectMail.mod)
*
* Use under UMS V9 ONLY!!!
*
*/
#include <clib/ums_protos.h>
#include <stdio.h>
#include <stdlib.h>
UMSUserAccount account;
/* get UMS error number and print error text */
void CheckErr(void)
{
UMSError err;
err=UMSErrNum(account);
/* got an error? */
if (err != UMSERR_OK)
{
fprintf(stderr,"UMS-Error: %3d, '%s'\n",err,UMSErrTxt(account));
UMSLogout(account);
exit(20);
}
}
int main(int argc, char *argv[])
{
char *login,*passwd,*select;
UMSMsgNum result;
if (argc<3)
{
fprintf(stderr,"Usage: %s <login> <passwd> [<select name>]\n",argv[0]);
exit(0);
}
/* Read parameters */
login=argv[1];
passwd=argv[2];
if (argc>3)
select=argv[3]; /* select name is the same as login name */
else
select=login;
/* log into UMS system */
if ((account=UMSLogin(login,passwd))==NULL)
{
fprintf(stderr,"Login failed.\n");
exit(20);
}
/****************************************************************************
1. For all messages with
(GlobalFlags & (ViewAccess|PostPoned|Old)) == ViewAccess
set the local flag bit 0.
These are all NEW messages, which can be seen by the user.
*****************************************************************************/
printf("Looking for new messages: ");
fflush(stdout);
result=UMSSelectTags(account,UMSTAG_SelMask, UMSUSTATF_ViewAccess |
UMSUSTATF_PostPoned |
UMSUSTATF_Old,
UMSTAG_SelMatch, UMSUSTATF_ViewAccess,
UMSTAG_SelWriteLocal, TRUE,
UMSTAG_SelSet, (1L<<0),
UMSTAG_SelUnset, 0,
TAG_DONE);
printf("%d found.\n",result);
CheckErr();
/****************************************************************************
2. For all messages with
ToName field == select name
set the local flag bit 1.
These are all messages addressed to the user.
*****************************************************************************/
printf("selecting by name: ");
fflush(stdout);
result=UMSSelectTags(account,UMSTAG_WToName, select,
UMSTAG_SelWriteLocal, TRUE,
UMSTAG_SelSet, (1L<<1),
UMSTAG_SelUnset, 0,
UMSTAG_SelQuick, TRUE,
TAG_DONE);
printf("%d selected.\n",result);
CheckErr();
/****************************************************************************
3. For all messages with
(LocalFlags & (Bit 0 and Bit 1)) == (Bit 0 and Bit 1)
set the local flag bit 4.
This operation builds the intersection set of the operation 1 and 2,
thus setting the local flag bit 4 in all new messages, which are
addressed to the user.
*****************************************************************************/
printf(" new messages amongst these: ");
fflush(stdout);
result=UMSSelectTags(account,UMSTAG_SelReadLocal, TRUE,
UMSTAG_SelMask, (1L<<0) | (1L<<1),
UMSTAG_SelMatch, (1L<<0) | (1L<<1),
UMSTAG_SelWriteLocal, TRUE,
UMSTAG_SelSet, (1L<<4),
UMSTAG_SelUnset, 0,
UMSTAG_SelQuick, TRUE,
TAG_DONE);
printf("%d selected.\n",result);
CheckErr();
/****************************************************************************
4. For all messages with
FromName field == select name
set local flag bit 2.
These are all messages written by the user.
*****************************************************************************/
printf("looking for messages written by you: ");
fflush(stdout);
result=UMSSelectTags(account,UMSTAG_WFromName, select,
UMSTAG_SelWriteLocal, TRUE,
UMSTAG_SelSet, (1L<<2),
UMSTAG_SelUnset, 0,
UMSTAG_SelQuick, TRUE,
TAG_DONE);
printf("%d found.\n",result);
CheckErr();
/****************************************************************************
5. For all messages with a parent message and
(parent's LocalFlags & Bit 2) == Bit 2
set local flag bit 3.
These are all replies to messages written by the user.
*****************************************************************************/
printf("selecting replies to your msgs: ");
fflush(stdout);
result=UMSSelectTags(account,UMSTAG_SelReadLocal, TRUE,
UMSTAG_SelParent, TRUE,
UMSTAG_SelMask, (1L<<2),
UMSTAG_SelMatch, (1L<<2),
UMSTAG_SelWriteLocal, TRUE,
UMSTAG_SelSet, (1L<<3),
UMSTAG_SelUnset, 0,
UMSTAG_SelQuick, TRUE,
TAG_DONE);
printf("%d selected.\n",result);
CheckErr();
/****************************************************************************
6. For all messages with
(LocalFlags & (Bit 0 and Bit 3)) == (Bit 0 and Bit 3)
set the local flag bit 4.
This operation builds the intersection set of the operation 4 and 5,
thus setting the local flag bit 4 in all new messages, which are
replies to messages written by the user.
*****************************************************************************/
printf(" new messages amongst these: ");
fflush(stdout);
result=UMSSelectTags(account,UMSTAG_SelReadLocal, TRUE,
UMSTAG_SelMask, (1L<<0) | (1L<<3),
UMSTAG_SelMatch, (1L<<0) | (1L<<3),
UMSTAG_SelWriteLocal, TRUE,
UMSTAG_SelSet, (1L<<4),
UMSTAG_SelUnset, 0,
UMSTAG_SelQuick, TRUE,
TAG_DONE);
printf("%d selected.\n",result);
CheckErr();
/****************************************************************************
7. For all messages with
(LocalFlags & Bit 4) == Bit 4
set the selected user flag.
This operation builds the union set of the operation 3 and 6, thus
setting the selected user flag in all new messages, which are either
messages addressed to the user or replies to messages written by the
user.
The news reader will now show these messages first.
*****************************************************************************/
printf("totally selected: ");
fflush(stdout);
result=UMSSelectTags(account,UMSTAG_SelReadLocal, TRUE,
UMSTAG_SelMask, (1L<<4),
UMSTAG_SelMatch, (1L<<4),
UMSTAG_SelSet, UMSUSTATF_Selected,
UMSTAG_SelUnset, 0,
TAG_DONE);
printf("%d.\n",result);
CheckErr();
UMSLogout(account);
return(0);
}